# -*- coding: utf-8 -*-
from legendaryPowerClientScript.util.boundingboxes import CuboidBoundingBoxfrom legendaryPowerClientScript.util.vector import Vectorclass OBB(object):
    def __init__(self, point_set, dimension=None):
        # type: (CuboidBoundingBox or list[Vector], int) -> None
        """
        用于表示Oriented Bounding Box（OBB，定向包围盒）的类。与CuboidBoundingBox不同，这种碰撞箱可以绕任意轴旋转

        Attributes:
            origin (Vector): 包围盒的原点位置。
            xDir (Vector): 包围盒x轴的方向向量。
            yDir (Vector): 包围盒y轴的方向向量。
            zDir (Vector): 包围盒z轴的方向向量。
            pos (Vector): 包围盒中心点位置。
            axisX (Vector): 包围盒x轴的方向向量。
            axisY (Vector): 包围盒y轴的方向向量。
            axisZ (Vector): 包围盒z轴的方向向量。
            half_size (np.array): 包围盒每个轴上长度的一半。
            dimension (int): 包围盒所在的维度。
        """
        pass

    def rotateAroundZ(self, degree, around):
        # type: (float, Vector) -> OBB
        """
        绕着z轴旋转指定的角度。

        Args:
            degree (float): 旋转角度。
            around (Vector): 旋转中心点。

        Returns:
            OBB: 旋转后的OBB对象。
        """
        pass

    def rotateAroundY(self, degree, around):
        # type: (float, Vector) -> OBB
        """
        绕着y轴旋转指定的角度。

        Args:
            degree (float): 旋转角度。
            around (Vector): 旋转中心点。

        Returns:
            OBB: 旋转后的OBB对象。
        """
        pass

    def offset(self, vec):
        # type: (Vector) -> None
        """
        将包围盒的位置偏移指定的向量。

        Args:
            vec (Vector): 偏移向量。

        Returns:
            None
        """
        pass

    def __get_distance(self, point_1, point_2):  # 计算两个点的距离
        # type: (tuple, tuple) -> float
        """
        计算两个点的距离。

        Args:
            point_1 (tuple): 第一个点的坐标。
            point_2 (tuple): 第二个点的坐标。

        Returns:
            float: 两个点的距离。
        """
        pass

    def intersects(self, bb):
        # type: (OBB or CuboidBoundingBox) -> bool
        """
        判断当前包围盒是否与指定的包围盒相交。
        Args:
            bb (OBB or CuboidBoundingBox): 指定的包围盒。
        Returns:
            bool: 如果相交返回True，否则返回False。
        """
        pass

